In recent years, program languages in which programmers can describe intuitive operators are widely used in order to improve the maintainability and robustness of programs. For example, in the Java (trademark) language, a programmer can easily describe a process of appending a character string to a string variable, using a “+” operator.
Moreover, heretofore, technologies for partial redundancy elimination (refer to non-patent literature 1) and technologies for partial dead assignment elimination (refer to non-patent literature 2) have been used in compilers.
(Non-Patent Literature 1)    J. Knoop, O. Ruthing, and B. Steffen: “Lazy Code Motion,” In PLDI '92, 224-234, 1992.
(Non-Patent Literature 2)    J. Knoop, O. Ruthing, and B. Steffen: “Partial Dead Code Elimination,” In PLDI '94, 147-158, 1994.
In practice, a process of appending a character string is compiled into a set of many processes, such as reservation of a memory area and copying of data. However, when a plurality of character strings are sequentially appended to the same string variable, redundant reservation of a memory area, redundant copying of data, and the like may occur. Furthermore, these redundant instructions may not be appropriately eliminated by simply adopting technologies for partial redundancy elimination and partial dead assignment elimination. For example, when a process of appending a character string is frequently used in a program for a server, the operation efficiency of the server is lowered.